Bring back elide_underscores
authorMatthias Clasen <mclasen@redhat.com>
Mon, 24 May 2021 21:37:05 +0000 (17:37 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 24 May 2021 21:37:05 +0000 (17:37 -0400)
This used to live in gtktoolbar.c, which is gone.
We still need it, so put it in gtkprivate.c.

gtk/gtkprivate.c
gtk/gtkprivate.h

index ce7077e7c25d8a9c6cc0b1f535e3a81ccc47694d..519d91f4a11bf1edfd5979e27b46ac9df75779af 100644 (file)
@@ -266,3 +266,46 @@ gtk_get_portal_session_path (GDBusConnection  *connection,
 {
    return get_portal_path (connection, "session", token);
 }
+
+char *
+_gtk_elide_underscores (const char *original)
+{
+  char *q, *result;
+  const char *p, *end;
+  gsize len;
+  gboolean last_underscore;
+  
+  if (!original)
+    return NULL;
+
+  len = strlen (original);
+  q = result = g_malloc (len + 1);
+  last_underscore = FALSE;
+  
+  end = original + len;
+  for (p = original; p < end; p++)
+    {
+      if (!last_underscore && *p == '_')
+        last_underscore = TRUE;
+      else
+        {
+          last_underscore = FALSE;
+          if (original + 2 <= p && p + 1 <= end && 
+              p[-2] == '(' && p[-1] == '_' && p[0] != '_' && p[1] == ')')
+            {
+              q--;
+              *q = '\0';
+              p++;
+            }
+          else
+            *q++ = *p;
+        }
+    }
+
+  if (last_underscore)
+    *q++ = '_';
+  
+  *q = '\0';
+  
+  return result;
+}
index cd41e85b2c312a469822abdcd3fbe6ac3d6fbee7..ff3e188eef0d391710a9d54c44b2a8a14c992587 100644 (file)
@@ -144,6 +144,8 @@ GBytes *get_emoji_data (void);
 
 #endif /* G_ENABLE_DEBUG */
 
+char * _gtk_elide_underscores (const char *original);
+
 G_END_DECLS
 
 #endif /* __GTK_PRIVATE_H__ */